package com.atguigu.bigdata.scala.chapter06

object Scala13_Object_Interface_1 {

    def main(args: Array[String]): Unit = {

        // TODO - 面向对象编程
        // TODO 特质 (trait)
        // 可以将特质理解为接口，但是也可以将特质理解为抽象类
        // 特质可以看作是接口和抽象类的结合体，在某些场合理解为接口，在某些场合理解为抽象类即可

        // 1. 类 extends 特质 => 将特质理解为抽象类
        // 2. 类 extends 父类 with 特质 => 将特质理解为接口
        // 3. 类 extends 父类 with 特质1 with 特质 2 => 将特质理解为接口，可以多实现（混入）
        // 4. 特质 extends 父类 => 将特质理解为抽象类
        // 5. 特质中可以有抽象方法，但是如果将特质理解为抽象类，也可以声明为完整方法
        // 6. 类 extends 特质1 with 特质2 with 特质3
        new Person().run()
    }
    //trait Run extends Exception {
    trait Run {
        def run(): Unit
        def test(): Unit = {

        }
    }
    trait Readable {
        def read():Unit
    }
    class Parent {

    }
    class Person extends Parent with Run with Readable {
        def run(): Unit = {
            println("双脚直立跑")
        }
        def read():Unit = {
            println("读取信息")
        }
        override def test(): Unit = {

        }
    }
}
